const o = { x: 1, y: "fff" };
function f(greet, end) {
  console.log(`${greet} ${this?.y}${end ? end : ""}`);
}

f.call(o, "hello"); // hello fff
f.call(o, "hello", "."); // hello fff.
f.apply(o, ["hello"]); // hello fff
f.apply(o, ["hello", "!"]); // hello fff!
Reflect.apply(f, o, ["hello", "~"]); // hello fff~
Reflect.apply(f, null, ["hello"]); // hello undefined
